﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

using sipfe.model.dataAccess;

namespace sipfe.model.mante
{
    public class CompendioManteDAO
    {
        private BDSIPFEEntities db = new BDSIPFEEntities();

        public String[] AgregarTablaInpDAO(SIPMaeCompendio sipMaeCompendio)
        {
            db.SIPMaeCompendio.Add(sipMaeCompendio);
            db.SaveChanges();
            return new String[] { sipMaeCompendio.nIdeCompendio.ToString(), sipMaeCompendio.vNomTabla };
        }

        public string AgregarCompendioDetalleDAO(SIPDetCompendio sipDetCompendio)
        {
            db.SIPDetCompendio.Add(sipDetCompendio);
            db.SaveChanges();
            return (sipDetCompendio.nIdeDetalle >0) ? "1" : "error";
        }


        /* LISTAR TABLAS */
        public SIPMaeCompendio sipMaeCompendioByIdDAO(decimal nIdeCompendio)
        {
            return db.SIPMaeCompendio.Find(nIdeCompendio);
        }
        public SIPDetCompendio sipDetCompendioDetalleByIdDAO(decimal nIdeDetalle)
        {
            return db.SIPDetCompendio.Find(nIdeDetalle);
        }

        public List<SIPDetCompendio> compendioDetalleDetDAO(int idCompendio)
        {
            return db.SIPDetCompendio.Where(x => x.nIdeCompendio == idCompendio).ToList();
        }

        public List<SIPDetCompGrupo> listaElementosDelGrupoDAO(int nIdeDetalleGrupo)
        {
            return db.SIPDetCompGrupo.Where(x => x.nIdeDetalleGrupo == nIdeDetalleGrupo).ToList();
        }
        
        public decimal addItemAlGrupoDAO(SIPDetCompGrupo sipDetCompGrupo)
        {
            db.SIPDetCompGrupo.Add(sipDetCompGrupo);
            db.SaveChanges();
            return sipDetCompGrupo.nIdeGrupo;
        }

        public int cerrarVigenciaEnGrupoDAO(int nIdeGrupo,DateTime hoy)
        {
            SIPDetCompGrupo sipDetCompGrupo = new SIPDetCompGrupo();
            sipDetCompGrupo = db.SIPDetCompGrupo.Find(nIdeGrupo);
            sipDetCompGrupo.dtFecFinVig = hoy;
            db.Entry(sipDetCompGrupo).State = EntityState.Modified;
            db.SaveChanges();
            return (sipDetCompGrupo.dtFecFinVig != null) ? 1 : 0;
        }

        public int cerrarVigenciaCompDetalleDAO(decimal nIdeDetalle, DateTime hoy)
        {

            SIPDetCompendio sipDetCompendio = new SIPDetCompendio();
            sipDetCompendio = db.SIPDetCompendio.Find(nIdeDetalle);
            sipDetCompendio.dtFecFinVig = hoy;
            db.Entry(sipDetCompendio).State = EntityState.Modified;
           // db.SaveChanges();

            //cerramos vigencia de los elementos de los grupos, si es que existen
            var ListaElementosGrupo = db.SIPDetCompGrupo.Where(s => s.nIdeDetalleGrupo == nIdeDetalle).ToList();
            ListaElementosGrupo.ForEach(x => x.dtFecFinVig = hoy);
            db.SaveChanges();

            return (sipDetCompendio.dtFecFinVig != null) ? 1 : 0;
            
        }

        /*UPDATE TABLAS*/

        public String[] updateMaeCompenedioDAO(SIPMaeCompendio sipMaeCompendio)
        {
            db.Entry(sipMaeCompendio).State = EntityState.Modified;
            db.SaveChanges();
            return new String[] { sipMaeCompendio.nIdeCompendio.ToString(), sipMaeCompendio.vNomTabla };
        }

        public String[] updateDetCompenedioDAO(SIPDetCompendio sipDetCompendio)
        {
            db.Entry(sipDetCompendio).State = EntityState.Modified;
            db.SaveChanges();
            return new String[] { sipDetCompendio.nIdeDetalle.ToString(), sipDetCompendio.vNomDetalle};
        }

        



    }
}
